<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE FlexibleContexts #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><span id="line-3"></span><span>
</span><span id="line-4"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-5"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-6"></span><span class="hs-comment">-- Module      :  Distribution.Simple.Program.Hpc</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- Copyright   :  Thomas Tuegel 2011</span><span>
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
</span><span id="line-9"></span><span class="hs-comment">-- Maintainer  :  cabal-devel@haskell.org</span><span>
</span><span id="line-10"></span><span class="hs-comment">-- Portability :  portable</span><span>
</span><span id="line-11"></span><span class="hs-comment">--</span><span>
</span><span id="line-12"></span><span class="hs-comment">-- This module provides an library interface to the @hpc@ program.</span><span>
</span><span id="line-13"></span><span>
</span><span id="line-14"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Distribution.Simple.Program.Hpc</span><span>
</span><span id="line-15"></span><span>    </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#markup"><span class="hs-identifier">markup</span></a></span><span>
</span><span id="line-16"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#union"><span class="hs-identifier">union</span></a></span><span>
</span><span id="line-17"></span><span>    </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../base/src/Prelude.html#"><span class="hs-identifier">Prelude</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-20"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Compat.Prelude.html"><span class="hs-identifier">Distribution.Compat.Prelude</span></a></span><span>
</span><span id="line-21"></span><span>
</span><span id="line-22"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../directory/src/System.Directory.html#"><span class="hs-identifier">System.Directory</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../directory/src/System.Directory.html#makeRelativeToCurrentDirectory"><span class="hs-identifier">makeRelativeToCurrentDirectory</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-23"></span><span>
</span><span id="line-24"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.ModuleName.html"><span class="hs-identifier">Distribution.ModuleName</span></a></span><span>
</span><span id="line-25"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Run.html"><span class="hs-identifier">Distribution.Simple.Program.Run</span></a></span><span>
</span><span id="line-26"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Types.html"><span class="hs-identifier">Distribution.Simple.Program.Types</span></a></span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Pretty.html"><span class="hs-identifier">Distribution.Pretty</span></a></span><span>
</span><span id="line-28"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Simple.Utils.html"><span class="hs-identifier">Distribution.Simple.Utils</span></a></span><span>
</span><span id="line-29"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Verbosity.html"><span class="hs-identifier">Distribution.Verbosity</span></a></span><span>
</span><span id="line-30"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Distribution.Version.html"><span class="hs-identifier">Distribution.Version</span></a></span><span>
</span><span id="line-31"></span><span>
</span><span id="line-32"></span><span class="hs-comment">-- | Invoke hpc with the given parameters.</span><span>
</span><span id="line-33"></span><span class="hs-comment">--</span><span>
</span><span id="line-34"></span><span class="hs-comment">-- Prior to HPC version 0.7 (packaged with GHC 7.8), hpc did not handle</span><span>
</span><span id="line-35"></span><span class="hs-comment">-- multiple .mix paths correctly, so we print a warning, and only pass it the</span><span>
</span><span id="line-36"></span><span class="hs-comment">-- first path in the list. This means that e.g. test suites that import their</span><span>
</span><span id="line-37"></span><span class="hs-comment">-- library as a dependency can still work, but those that include the library</span><span>
</span><span id="line-38"></span><span class="hs-comment">-- modules directly (in other-modules) don't.</span><span>
</span><span id="line-39"></span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#markup"><span class="hs-identifier hs-type">markup</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Types.html#ConfiguredProgram"><span class="hs-identifier hs-type">ConfiguredProgram</span></a></span><span>
</span><span id="line-40"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Types.Version.html#Version"><span class="hs-identifier hs-type">Version</span></a></span><span>
</span><span id="line-41"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Verbosity.html#Verbosity"><span class="hs-identifier hs-type">Verbosity</span></a></span><span>
</span><span id="line-42"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>            </span><span class="hs-comment">-- ^ Path to .tix file</span><span>
</span><span id="line-43"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span class="hs-special">]</span><span>          </span><span class="hs-comment">-- ^ Paths to .mix file directories</span><span>
</span><span id="line-44"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>            </span><span class="hs-comment">-- ^ Path where html output should be located</span><span>
</span><span id="line-45"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.ModuleName.html#ModuleName"><span class="hs-identifier hs-type">ModuleName</span></a></span><span class="hs-special">]</span><span>        </span><span class="hs-comment">-- ^ List of modules to exclude from report</span><span>
</span><span id="line-46"></span><span>       </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-47"></span><span id="markup"><span class="annot"><span class="annottext">markup :: ConfiguredProgram
-&gt; Version
-&gt; Verbosity
-&gt; FilePath
-&gt; [FilePath]
-&gt; FilePath
-&gt; [ModuleName]
-&gt; IO ()
</span><a href="Distribution.Simple.Program.Hpc.html#markup"><span class="hs-identifier hs-var hs-var">markup</span></a></span></span><span> </span><span id="local-6989586621679685132"><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685132"><span class="hs-identifier hs-var">hpc</span></a></span></span><span> </span><span id="local-6989586621679685131"><span class="annot"><span class="annottext">Version
</span><a href="#local-6989586621679685131"><span class="hs-identifier hs-var">hpcVer</span></a></span></span><span> </span><span id="local-6989586621679685130"><span class="annot"><span class="annottext">Verbosity
</span><a href="#local-6989586621679685130"><span class="hs-identifier hs-var">verbosity</span></a></span></span><span> </span><span id="local-6989586621679685129"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685129"><span class="hs-identifier hs-var">tixFile</span></a></span></span><span> </span><span id="local-6989586621679685128"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685128"><span class="hs-identifier hs-var">hpcDirs</span></a></span></span><span> </span><span id="local-6989586621679685127"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685127"><span class="hs-identifier hs-var">destDir</span></a></span></span><span> </span><span id="local-6989586621679685126"><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685126"><span class="hs-identifier hs-var">excluded</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-48"></span><span>    </span><span id="local-6989586621679685125"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685125"><span class="hs-identifier hs-var">hpcDirs'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Version -&gt; VersionRange -&gt; Bool
</span><a href="Distribution.Types.VersionRange.html#withinRange"><span class="hs-identifier hs-var">withinRange</span></a></span><span> </span><span class="annot"><span class="annottext">Version
</span><a href="#local-6989586621679685131"><span class="hs-identifier hs-var">hpcVer</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Version -&gt; VersionRange
</span><a href="Distribution.Types.VersionRange.Internal.html#orLaterVersion"><span class="hs-identifier hs-var">orLaterVersion</span></a></span><span> </span><span class="annot"><span class="annottext">Version
</span><a href="#local-6989586621679685122"><span class="hs-identifier hs-var">version07</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-49"></span><span>        </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">[FilePath] -&gt; IO [FilePath]
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685128"><span class="hs-identifier hs-var">hpcDirs</span></a></span><span>
</span><span id="line-50"></span><span>        </span><span class="hs-keyword">else</span><span> </span><span class="hs-keyword">do</span><span>
</span><span id="line-51"></span><span>            </span><span class="annot"><span class="annottext">Verbosity -&gt; FilePath -&gt; IO ()
</span><a href="Distribution.Simple.Utils.html#warn"><span class="hs-identifier hs-var">warn</span></a></span><span> </span><span class="annot"><span class="annottext">Verbosity
</span><a href="#local-6989586621679685130"><span class="hs-identifier hs-var">verbosity</span></a></span><span> </span><span class="annot"><span class="annottext">(FilePath -&gt; IO ()) -&gt; FilePath -&gt; IO ()
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;Your version of HPC (&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Version -&gt; FilePath
forall a. Pretty a =&gt; a -&gt; FilePath
</span><a href="Distribution.Pretty.html#prettyShow"><span class="hs-identifier hs-var">prettyShow</span></a></span><span> </span><span class="annot"><span class="annottext">Version
</span><a href="#local-6989586621679685131"><span class="hs-identifier hs-var">hpcVer</span></a></span><span>
</span><span id="line-52"></span><span>                </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;) does not properly handle multiple search paths. &quot;</span></span><span>
</span><span id="line-53"></span><span>                </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;Coverage report generation may fail unexpectedly. These &quot;</span></span><span>
</span><span id="line-54"></span><span>                </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;issues are addressed in version 0.7 or later (GHC 7.8 or &quot;</span></span><span>
</span><span id="line-55"></span><span>                </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;later).&quot;</span></span><span>
</span><span id="line-56"></span><span>                </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">[FilePath] -&gt; Bool
forall (t :: * -&gt; *) a. Foldable t =&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#null"><span class="hs-identifier hs-var">null</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685118"><span class="hs-identifier hs-var">droppedDirs</span></a></span><span>
</span><span id="line-57"></span><span>                    </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;&quot;</span></span><span>
</span><span id="line-58"></span><span>                    </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot; The following search paths have been abandoned: &quot;</span></span><span>
</span><span id="line-59"></span><span>                        </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath] -&gt; FilePath
forall a. Show a =&gt; a -&gt; FilePath
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685118"><span class="hs-identifier hs-var">droppedDirs</span></a></span><span>
</span><span id="line-60"></span><span>            </span><span class="annot"><span class="annottext">[FilePath] -&gt; IO [FilePath]
forall (m :: * -&gt; *) a. Monad m =&gt; a -&gt; m a
</span><a href="../../base/src/GHC.Base.html#return"><span class="hs-identifier hs-var">return</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685116"><span class="hs-identifier hs-var">passedDirs</span></a></span><span>
</span><span id="line-61"></span><span>
</span><span id="line-62"></span><span>    </span><span class="hs-comment">-- Prior to GHC 8.0, hpc assumes all .mix paths are relative.</span><span>
</span><span id="line-63"></span><span>    </span><span id="local-6989586621679685115"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685115"><span class="hs-identifier hs-var">hpcDirs''</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">(FilePath -&gt; IO FilePath) -&gt; [FilePath] -&gt; IO [FilePath]
forall (t :: * -&gt; *) (f :: * -&gt; *) a b.
(Traversable t, Applicative f) =&gt;
(a -&gt; f b) -&gt; t a -&gt; f (t b)
</span><a href="../../base/src/Data.Traversable.html#traverse"><span class="hs-identifier hs-var">traverse</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; IO FilePath
</span><a href="../../directory/src/System.Directory.html#makeRelativeToCurrentDirectory"><span class="hs-identifier hs-var">makeRelativeToCurrentDirectory</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685125"><span class="hs-identifier hs-var">hpcDirs'</span></a></span><span>
</span><span id="line-64"></span><span>
</span><span id="line-65"></span><span>    </span><span class="annot"><span class="annottext">Verbosity -&gt; ProgramInvocation -&gt; IO ()
</span><a href="Distribution.Simple.Program.Run.html#runProgramInvocation"><span class="hs-identifier hs-var">runProgramInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">Verbosity
</span><a href="#local-6989586621679685130"><span class="hs-identifier hs-var">verbosity</span></a></span><span>
</span><span id="line-66"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConfiguredProgram
-&gt; FilePath
-&gt; [FilePath]
-&gt; FilePath
-&gt; [ModuleName]
-&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Hpc.html#markupInvocation"><span class="hs-identifier hs-var">markupInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685132"><span class="hs-identifier hs-var">hpc</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685129"><span class="hs-identifier hs-var">tixFile</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685115"><span class="hs-identifier hs-var">hpcDirs''</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685127"><span class="hs-identifier hs-var">destDir</span></a></span><span> </span><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685126"><span class="hs-identifier hs-var">excluded</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-67"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-68"></span><span>    </span><span id="local-6989586621679685122"><span class="annot"><span class="annottext">version07 :: Version
</span><a href="#local-6989586621679685122"><span class="hs-identifier hs-var hs-var">version07</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Int] -&gt; Version
</span><a href="Distribution.Types.Version.html#mkVersion"><span class="hs-identifier hs-var">mkVersion</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">7</span></span><span class="hs-special">]</span><span>
</span><span id="line-69"></span><span>    </span><span class="hs-special">(</span><span id="local-6989586621679685116"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685116"><span class="hs-identifier hs-var">passedDirs</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679685118"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685118"><span class="hs-identifier hs-var">droppedDirs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int -&gt; [FilePath] -&gt; ([FilePath], [FilePath])
forall a. Int -&gt; [a] -&gt; ([a], [a])
</span><a href="../../base/src/GHC.List.html#splitAt"><span class="hs-identifier hs-var">splitAt</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685128"><span class="hs-identifier hs-var">hpcDirs</span></a></span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#markupInvocation"><span class="hs-identifier hs-type">markupInvocation</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Types.html#ConfiguredProgram"><span class="hs-identifier hs-type">ConfiguredProgram</span></a></span><span>
</span><span id="line-72"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>            </span><span class="hs-comment">-- ^ Path to .tix file</span><span>
</span><span id="line-73"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span class="hs-special">]</span><span>          </span><span class="hs-comment">-- ^ Paths to .mix file directories</span><span>
</span><span id="line-74"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>            </span><span class="hs-comment">-- ^ Path where html output should be</span><span>
</span><span id="line-75"></span><span>                                        </span><span class="hs-comment">-- located</span><span>
</span><span id="line-76"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.ModuleName.html#ModuleName"><span class="hs-identifier hs-type">ModuleName</span></a></span><span class="hs-special">]</span><span>        </span><span class="hs-comment">-- ^ List of modules to exclude from</span><span>
</span><span id="line-77"></span><span>                                        </span><span class="hs-comment">-- report</span><span>
</span><span id="line-78"></span><span>                 </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Run.html#ProgramInvocation"><span class="hs-identifier hs-type">ProgramInvocation</span></a></span><span>
</span><span id="line-79"></span><span id="markupInvocation"><span class="annot"><span class="annottext">markupInvocation :: ConfiguredProgram
-&gt; FilePath
-&gt; [FilePath]
-&gt; FilePath
-&gt; [ModuleName]
-&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Hpc.html#markupInvocation"><span class="hs-identifier hs-var hs-var">markupInvocation</span></a></span></span><span> </span><span id="local-6989586621679685109"><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685109"><span class="hs-identifier hs-var">hpc</span></a></span></span><span> </span><span id="local-6989586621679685108"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685108"><span class="hs-identifier hs-var">tixFile</span></a></span></span><span> </span><span id="local-6989586621679685107"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685107"><span class="hs-identifier hs-var">hpcDirs</span></a></span></span><span> </span><span id="local-6989586621679685106"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685106"><span class="hs-identifier hs-var">destDir</span></a></span></span><span> </span><span id="local-6989586621679685105"><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685105"><span class="hs-identifier hs-var">excluded</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-80"></span><span>    </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679685103"><span class="annot"><span class="annottext">args :: [FilePath]
</span><a href="#local-6989586621679685103"><span class="hs-identifier hs-var hs-var">args</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;markup&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685108"><span class="hs-identifier hs-var">tixFile</span></a></span><span>
</span><span id="line-81"></span><span>               </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--destdir=&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685106"><span class="hs-identifier hs-var">destDir</span></a></span><span>
</span><span id="line-82"></span><span>               </span><span class="hs-special">]</span><span>
</span><span id="line-83"></span><span>            </span><span class="annot"><span class="annottext">[FilePath] -&gt; [FilePath] -&gt; [FilePath]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">(FilePath -&gt; FilePath) -&gt; [FilePath] -&gt; [FilePath]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="../../base/src/GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--hpcdir=&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685107"><span class="hs-identifier hs-var">hpcDirs</span></a></span><span>
</span><span id="line-84"></span><span>            </span><span class="annot"><span class="annottext">[FilePath] -&gt; [FilePath] -&gt; [FilePath]
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--exclude=&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">ModuleName -&gt; FilePath
forall a. Pretty a =&gt; a -&gt; FilePath
</span><a href="Distribution.Pretty.html#prettyShow"><span class="hs-identifier hs-var">prettyShow</span></a></span><span> </span><span class="annot"><span class="annottext">ModuleName
</span><a href="#local-6989586621679685102"><span class="hs-identifier hs-var">moduleName</span></a></span><span>
</span><span id="line-85"></span><span>               </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621679685102"><span class="annot"><span class="annottext">ModuleName
</span><a href="#local-6989586621679685102"><span class="hs-identifier hs-var">moduleName</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685105"><span class="hs-identifier hs-var">excluded</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-86"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">ConfiguredProgram -&gt; [FilePath] -&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Run.html#programInvocation"><span class="hs-identifier hs-var">programInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685109"><span class="hs-identifier hs-var">hpc</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685103"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-87"></span><span>
</span><span id="line-88"></span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#union"><span class="hs-identifier hs-type">union</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Types.html#ConfiguredProgram"><span class="hs-identifier hs-type">ConfiguredProgram</span></a></span><span>
</span><span id="line-89"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Verbosity.html#Verbosity"><span class="hs-identifier hs-type">Verbosity</span></a></span><span>
</span><span id="line-90"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span class="hs-special">]</span><span>         </span><span class="hs-comment">-- ^ Paths to .tix files</span><span>
</span><span id="line-91"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>           </span><span class="hs-comment">-- ^ Path to resultant .tix file</span><span>
</span><span id="line-92"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.ModuleName.html#ModuleName"><span class="hs-identifier hs-type">ModuleName</span></a></span><span class="hs-special">]</span><span>       </span><span class="hs-comment">-- ^ List of modules to exclude from union</span><span>
</span><span id="line-93"></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">IO</span></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span id="union"><span class="annot"><span class="annottext">union :: ConfiguredProgram
-&gt; Verbosity -&gt; [FilePath] -&gt; FilePath -&gt; [ModuleName] -&gt; IO ()
</span><a href="Distribution.Simple.Program.Hpc.html#union"><span class="hs-identifier hs-var hs-var">union</span></a></span></span><span> </span><span id="local-6989586621679685100"><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685100"><span class="hs-identifier hs-var">hpc</span></a></span></span><span> </span><span id="local-6989586621679685099"><span class="annot"><span class="annottext">Verbosity
</span><a href="#local-6989586621679685099"><span class="hs-identifier hs-var">verbosity</span></a></span></span><span> </span><span id="local-6989586621679685098"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685098"><span class="hs-identifier hs-var">tixFiles</span></a></span></span><span> </span><span id="local-6989586621679685097"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685097"><span class="hs-identifier hs-var">outFile</span></a></span></span><span> </span><span id="local-6989586621679685096"><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685096"><span class="hs-identifier hs-var">excluded</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-95"></span><span>    </span><span class="annot"><span class="annottext">Verbosity -&gt; ProgramInvocation -&gt; IO ()
</span><a href="Distribution.Simple.Program.Run.html#runProgramInvocation"><span class="hs-identifier hs-var">runProgramInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">Verbosity
</span><a href="#local-6989586621679685099"><span class="hs-identifier hs-var">verbosity</span></a></span><span>
</span><span id="line-96"></span><span>      </span><span class="hs-special">(</span><span class="annot"><span class="annottext">ConfiguredProgram
-&gt; [FilePath] -&gt; FilePath -&gt; [ModuleName] -&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Hpc.html#unionInvocation"><span class="hs-identifier hs-var">unionInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685100"><span class="hs-identifier hs-var">hpc</span></a></span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685098"><span class="hs-identifier hs-var">tixFiles</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685097"><span class="hs-identifier hs-var">outFile</span></a></span><span> </span><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685096"><span class="hs-identifier hs-var">excluded</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-97"></span><span>
</span><span id="line-98"></span><span class="annot"><a href="Distribution.Simple.Program.Hpc.html#unionInvocation"><span class="hs-identifier hs-type">unionInvocation</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Types.html#ConfiguredProgram"><span class="hs-identifier hs-type">ConfiguredProgram</span></a></span><span>
</span><span id="line-99"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span class="hs-special">]</span><span>       </span><span class="hs-comment">-- ^ Paths to .tix files</span><span>
</span><span id="line-100"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../base/src/GHC.IO.html#FilePath"><span class="hs-identifier hs-type">FilePath</span></a></span><span>         </span><span class="hs-comment">-- ^ Path to resultant .tix file</span><span>
</span><span id="line-101"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Distribution.ModuleName.html#ModuleName"><span class="hs-identifier hs-type">ModuleName</span></a></span><span class="hs-special">]</span><span>     </span><span class="hs-comment">-- ^ List of modules to exclude from union</span><span>
</span><span id="line-102"></span><span>                </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Distribution.Simple.Program.Run.html#ProgramInvocation"><span class="hs-identifier hs-type">ProgramInvocation</span></a></span><span>
</span><span id="line-103"></span><span id="unionInvocation"><span class="annot"><span class="annottext">unionInvocation :: ConfiguredProgram
-&gt; [FilePath] -&gt; FilePath -&gt; [ModuleName] -&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Hpc.html#unionInvocation"><span class="hs-identifier hs-var hs-var">unionInvocation</span></a></span></span><span> </span><span id="local-6989586621679685094"><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685094"><span class="hs-identifier hs-var">hpc</span></a></span></span><span> </span><span id="local-6989586621679685093"><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685093"><span class="hs-identifier hs-var">tixFiles</span></a></span></span><span> </span><span id="local-6989586621679685092"><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685092"><span class="hs-identifier hs-var">outFile</span></a></span></span><span> </span><span id="local-6989586621679685091"><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685091"><span class="hs-identifier hs-var">excluded</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-104"></span><span>    </span><span class="annot"><span class="annottext">ConfiguredProgram -&gt; [FilePath] -&gt; ProgramInvocation
</span><a href="Distribution.Simple.Program.Run.html#programInvocation"><span class="hs-identifier hs-var">programInvocation</span></a></span><span> </span><span class="annot"><span class="annottext">ConfiguredProgram
</span><a href="#local-6989586621679685094"><span class="hs-identifier hs-var">hpc</span></a></span><span> </span><span class="annot"><span class="annottext">([FilePath] -&gt; ProgramInvocation)
-&gt; [FilePath] -&gt; ProgramInvocation
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">[[FilePath]] -&gt; [FilePath]
forall (t :: * -&gt; *) a. Foldable t =&gt; t [a] -&gt; [a]
</span><a href="../../base/src/Data.Foldable.html#concat"><span class="hs-identifier hs-var">concat</span></a></span><span>
</span><span id="line-105"></span><span>        </span><span class="hs-special">[</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;sum&quot;</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--union&quot;</span></span><span class="hs-special">]</span><span>
</span><span id="line-106"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[FilePath]
</span><a href="#local-6989586621679685093"><span class="hs-identifier hs-var">tixFiles</span></a></span><span>
</span><span id="line-107"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--output=&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">FilePath
</span><a href="#local-6989586621679685092"><span class="hs-identifier hs-var">outFile</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-108"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">FilePath
</span><span class="hs-string">&quot;--exclude=&quot;</span></span><span> </span><span class="annot"><span class="annottext">FilePath -&gt; FilePath -&gt; FilePath
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">ModuleName -&gt; FilePath
forall a. Pretty a =&gt; a -&gt; FilePath
</span><a href="Distribution.Pretty.html#prettyShow"><span class="hs-identifier hs-var">prettyShow</span></a></span><span> </span><span class="annot"><span class="annottext">ModuleName
</span><a href="#local-6989586621679685089"><span class="hs-identifier hs-var">moduleName</span></a></span><span>
</span><span id="line-109"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621679685089"><span class="annot"><span class="annottext">ModuleName
</span><a href="#local-6989586621679685089"><span class="hs-identifier hs-var">moduleName</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[ModuleName]
</span><a href="#local-6989586621679685091"><span class="hs-identifier hs-var">excluded</span></a></span><span> </span><span class="hs-special">]</span><span>
</span><span id="line-110"></span><span>        </span><span class="hs-special">]</span><span>
</span><span id="line-111"></span></pre></body></html>